<?php
/**
 * 
 * Autor				   : 	Juan Jose Muñiz Juarez
 * Fecha de Creacion	: 	01/05/2012,  22:49:32
 * Version 				: 	1.0
 * Descripcion 		:
 */

if ( !defined( "RUTA_FISICA_SISTEMA" ) )
   {
      require_once "../../../../config/Constantes.php";
   }

$ruta_sistema = RUTA_FISICA_SISTEMA . "/sistema/";

require_once $ruta_sistema . "general/clases/comun/base_datos/ORMAbstractClass.php";


// Pruebas
//require_once RUTA_FISICA_SISTEMA . "/tmp/MUsuario.php";
//require_once RUTA_FISICA_SISTEMA . "/tmp/MPersona.php";

class ORM extends ORMAbstractClass
   {
      private static $_motor;
      private $_objeto;
      private $_autoincrement;
      private $_campo_id;

      private function getORM()
        {
           if ( !self::$_motor )
             {
                self :: $_motor = GeneralORM::getORM( $this -> _objeto ); 
             }
        }
      
      /**
       * @param field_type $_autoincrement
       */
      public function setAutoincrement( $_autoincrement )
         {
            $this -> _autoincrement = $_autoincrement;
         }

      /**
       * @param field_type $_campo_id
       */
      public function setCampo_id( $_campo_id )
         {
            $this -> _campo_id = $_campo_id;
         }

      /**
       * 
       * Nombre         	: 	__construct
       * Descripcion   	:	
       * Version 			:  	1.0
       * Autor:			:	Juan Jose Muñiz Juarez
       * Fecha y Hora		:	01/05/2012, 23:09:38
       */
      function __construct( $objeto )
         {
            if ( !$objeto )
               {

               }

            $this -> _objeto = $objeto;
            $this -> setAutoincrement( null );
            $this -> setCampo_id( null );
         }

      /**
       * 
       * Nombre         	: 	getORM
       * Descripcion   	:	
       * Version 		:  	1.0
       * Autor:			:	Juan Jose Muñiz Juarez
       * Fecha y Hora	:	01/05/2012, 23:02:17
       */
      

      /**
       * Metodo sobrecargado
       * Nombre         : 	save
       * Descripcion   	:	
       * Version 		:  	1.0
       * Autor:			:	Juan Jose Muñiz Juarez
       * Fecha y Hora	:	01/05/2012, 22:51:23
       * @param unknown_type $objeto
       */
      public function save( $campos_ignorar = null )
         {
            $this -> getORM( );

            self :: $_motor -> save( $campos_ignorar );
         }

      /**
       * Metodo sobrecargado
       * Nombre         : 	update
       * Descripcion   	:	
       * Version 		:  	1.0
       * Autor:			:	Juan Jose Muñiz Juarez
       * Fecha y Hora	:	01/05/2012, 22:51:23
       * @param unknown_type $objeto
       */
      public function update( $campos_ignorar = null )
         {
            $this -> getORM( );

            self :: $_motor -> update( $campos_ignorar );
         }

      /**
       * Metodo sobrecargado
       * Nombre         : 	delete
       * Descripcion   	:	
       * Version 		:  	1.0
       * Autor:			:	Juan Jose Muñiz Juarez
       * Fecha y Hora	:	01/05/2012, 22:51:23
       * @param unknown_type $objeto
       * @param unknown_type $filtro
       */
      public function delete( $filtro = null )
         {
            $this -> getORM( );

            self :: $_motor -> delete( $filtro );
         }

      /**
       * Metodo sobrecargado
       * Nombre         	: 	find
       * Descripcion   	:	
       * Version 			:  	1.0
       * Autor:			:	Juan Jose Muñiz Juarez
       * Fecha y Hora		:	01/05/2012, 22:51:23
       * @param unknown_type $objeto
       */
      public function find( $id = null, $filtro = null )
         {
            $this -> getORM( );

            return self :: $_motor -> find( $id, $filtro );
         }

      /**
       * Metodo sobrecargado
       * Nombre         	: 	query
       * Descripcion   	:	
       * Version 			:  	1.0
       * Autor:			:	Juan Jose Muñiz Juarez
       * Fecha y Hora		:	01/05/2012, 22:51:23
       * @param unknown_type $query
       */
      public function query( $query )
         {
            $this -> getORM( );

            self :: $_motor -> query( $query );
         }

      /**
       * Metodo sobrecargado
       * Nombre         	: 	load
       * Descripcion   	:	
       * Version 			:  	1.0
       * Autor:			:	Juan Jose Muñiz Juarez
       * Fecha y Hora		:	01/05/2012, 22:51:23
       * @param unknown_type $objeto
       */
      public function load( $id )
         {
            $this -> getORM( );

            return self :: $_motor -> load( $id );
         }

      /**
       * Metodo sobrecargado
       * Nombre         	: 	findById
       * Descripcion   	:	
       * Version 			:  	1.0
       * Autor:			:	Juan Jose Muñiz Juarez
       * Fecha y Hora		:	01/05/2012, 22:51:23
       * @param unknown_type $id
       */
      public function findById( $id )
         {
            $this -> getORM( );

            return self :: $_motor -> findById( $id );
         }

      /**
       * 
       * Nombre         	: 	findAll
       * Descripcion   	:	
       * Version 			:  	1.0
       * Autor:			:	Juan Jose Muñiz Juarez
       * Fecha y Hora		:	03/05/2012, 21:02:01
       * @param unknown_type $filtro
       */
      public function findAll( $filtro = null )
         {
            $this -> getORM( );

            return self :: $_motor -> findAll( $filtro );
         }
   }